package com.laolang.pluto.module.generator.pojo.po;

import java.util.Map;
import lombok.Data;

/**
 * <p>数据库中表的详细信息</p>
 * <code>
 * show full columns from 表名
 * </code>
 *
 * @author laolang
 * @date 2021-08-02 00:13
 */
@Data
public class TableDetailPo {


    /**
     * 列名称
     */
    private String field;

    /**
     * 列类型
     */
    private String type;

    /**
     * 编码
     */
    private String collation;

    /**
     * 是否允许为空
     */
    private Boolean nullable;

    /**
     * 索引
     */
    private String keyType;

    /**
     * 默认值
     */
    private String defaultValue;

    /**
     *
     */
    private String extra;

    /**
     *
     */
    private String privileges;

    /**
     * 字段描述
     */
    private String comment;

    /**
     * 从 map 构建 TableDetailPo 对象
     *
     * @param map show full columns from 表名 返回的数据
     * @return TableDetailPo 对象
     */
    public static TableDetailPo buildTableDetailPoFromMap(Map<String, Object> map) {
        TableDetailPo po = new TableDetailPo();
        po.setField(map.get("Field").toString());
        po.setType(map.get("Type").toString());
        po.setCollation(null == map.get("Collation") ? null : map.get("Collation").toString());
        po.setNullable(!"NO".equals(map.get("Null").toString()));
        po.setKeyType(null == map.get("Key") ? null : map.get("Key").toString());
        po.setDefaultValue(null == map.get("Default") ? null : map.get("Default").toString());
        po.setExtra(null == map.get("Extra") ? null : map.get("Extra").toString());
        po.setPrivileges(map.get("Privileges").toString());
        po.setComment(null == map.get("Comment") ? null : map.get("Comment").toString());
        return po;
    }

}
